package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.CustomerInfo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 客服表 数据层
 */
@Repository
public interface CustomerUserMapper {
    /**
     * 根据条件分页查询客服列表
     *
     * @param CusUser 客服信息
     * @return 客服信息集合信息
     */
    public List<CustomerInfo> selectUserList(CustomerInfo CusUser);

    public List<CustomerInfo> selectToDayUser(CustomerInfo CusUser);


    /**
     * 通过客服名查询客服
     *
     * @param customerName 客服名
     * @return 客服对象信息
     */
    public CustomerInfo selectUserByUserName(String customerName);

    /**
     * 通过客服ID查询客服
     *
     * @param contactNumber whatsapp号码
     * @return 客服对象信息
     */
    public CustomerInfo selectUserByNumber(String contactNumber);

    public CustomerInfo selectChatById(String id);

    /**
     * 新增客服信息
     *
     * @param user 客服信息
     * @return 结果
     */
    public int insertUser(CustomerInfo user);

    /**
     * 修改客服信息
     *
     * @param user 客服信息
     * @return 结果
     */
    public int updateUser(CustomerInfo user);

    public int updateChatStatus(CustomerInfo user);

    public int updateLinkStatus(CustomerInfo user);


    /**
     * 重置客服密码
     *
     * @return 结果
     */
    public int resetUserPwd(CustomerInfo user);

    /**
     * 通过客服ID删除客服
     *
     * @param contactNumber whatsapp号码
     * @return 结果
     */
    public int deleteUserByNumber(String contactNumber);

    /**
     * 批量删除客服信息
     *
     * @param contactNumbers whatsapp号码
     * @return 结果
     */
    public int deleteUserByNumbers(String[] contactNumbers);

    /**
     * 校验客服名称是否唯一
     *
     * @param contactNumber whatsapp号码
     * @return 结果
     */
    public CustomerInfo checkContactNumberUnique(String contactNumber);


    /**
     *
     * @param ids
     * @return
     */
    List<CustomerInfo> selectToids(String[] ids);


    List<CustomerInfo>  selectUserByName(String userName);

    CustomerInfo selectUserByContactName(String contactName);

    public List<CustomerInfo> selectClientCount();

    @MapKey("contactNumber")
    Map<String, CustomerInfo> selectUsersByNumbers(@Param("contactNumbers") Set<String> contactNumbers);


}
